-
Notifications
You must be signed in to change notification settings - Fork 1.5k
*: add InstallType to InstallConfig #4209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
70f252b to
b06a994
Compare
Signed-off-by: Sam Batschelet <[email protected]>
b06a994 to
a89f586
Compare
| // InstallType provides signal to the cluster that the installation will not follow the default installer workflow. | ||
| // | ||
| // +optional | ||
| InstallType string `json:"installType,omitempty"` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like there's a more descriptive name to be found, and it should be an enum at least... seems like it will inevitably become mirror of PlatformType to some degree but with different lifecycle implications.
Is a raw enum going to be enough? (It wasn't for platform type.) What's the relationship between this type and and platform types? Which combinations are supported, and what are the clear semantics and cluster implications for each type and combination of type/platform? etc.
Would a vendor annotation on the installconfig make any sense as an alternative if we aren't able to more carefully specify these things right now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is a raw enum going to be enough? (It wasn't for platform type.) What's the relationship between this type and and platform types? Which combinations are supported, and what are the clear semantics and cluster implications for each type and combination of type/platform? etc.
I agree with you in general but the idea is that the logic and relationships that each operator would conclude should be based on the value. We could certainly make this more strict and only define explicitly supported types. Then extended the list as necessary.
Would a vendor annotation on the installconfig make any sense as an alternative if we aren't able to more carefully specify these things right now?
If no agreement can be made I am open to any reasonable signal.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(see: openshift/enhancements#480 (comment))
I agree that tying the install type to a platform doesn't make sense. The idea is to completely platform agnostic as the install type is not related to the platform it is performed on the platform. That was my intention in making the key at root level.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel like there's a more descriptive name to be found, and it should be an enum at least
If you have a better name I am open to change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm most interested in clarity of semantics. Possible values, what they mean on their own, what they mean with respect to platform types.
For example, based on what I understand so far, here's a try:
// AssistedInstaller indicates the platform will assume an installation
// topology consisting of exactly 3 nodes which will be the only available
// nodes to complete cluster bootstrapping.
//
// The platform may relax certain high availability constraints to achieve
// bootstrapping under the constrained topology.
//
// This install type is only supported when the platform type is BareMetal.
type AssistedInstaller InstallType = "AssistedInstaller"There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it needs to be even more specific in terms of the machine pools. Isn't the requirement for there to be a single master pool with 3 replicas and an empty worker pool? This should be unambiguous.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why? we let the user choose how many workers he adds - among all the discovered hardware, we auto-select 3 masters and all the rest become workers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point. Is the absence of the dedicated bootstrap node the substantive difference? Again, we should figure out how to define it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Worker pools are not assumed but unlike compact clusters workers are possible. @romfreiman keep me honest here.
|
@hexfusion: The following tests failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
|
I'm looking at the ClusterProfile proposal and wondering if we have some overlapping requirements here - that's focussed on the CVO, but perhaps we should have a "2 master bootstrap" cluster profile that sets some data via a manifest, that the CEO can consume to influence the bootstrap behavior? Also in the initial description it's mentioned that this requirement could include CRC/edge single node requirements, and we can't necessarily say all of those environments will be deployed via the assisted installer (could be UPI without the assisted workflow if customers are already using that approach and have their own automation in place, for example) so relying on a flag that defines the InstallType may prove inflexible in those cases? |
|
Also see #3986 |
The point of
So what I mean is that the To be clear I don't have super strong feeling on how the signal is passed but it needs to be clear. |
|
/cc @abhinavdahiya |
please find us on #cluster-profiles for further discussion ? Also, as I understood, an |
|
@gbraad I joined your forum but had no response to a few questions I will schedule a meeting next week. |
|
@hexfusion @gbraad please add me as well |
|
As far as I can see @hexfusion didn't respond on the internal at-reply since the 13th of Oct? Anyway, both @guillaumerose and @cfergeau are working on this. If you have any requests or questions, please schedule a meeting with them. |
As OpenShift 4 extends its use cases additional workflows for how the bootstrapping of the cluster will evolve. For example, assisted-installer uses the
openshift-installerto generate manifests and then independently manages the bootstrapping of the cluster after install complete. Because these alternative workflows require in many cases the cluster and operators to observe these changes clear signal is required.This PR introduces an optional field to the
InstallConfigInstallType. This type which will be embedded into thecluster-config-v1ConfigMap in thekube-systemnamespace. I feel this change requires very little overhead for maintenance meanwhile providing very important signal to the cluster.Other uses for this flag could include for example
CRCsingle node cluster [1] and new future edge installations. This allows the logic for how these installs are managed to be handled by the cluster operators instead of additional knobs to the installer itself.[1] openshift/enhancements#302
enhancement: openshift/enhancements#480
blocking 4.7 epic: https://issues.redhat.com/browse/ETCD-94